#include "buzzer.h"
uint8_t beep_flag = 0;

#define BEEP_DELAY delay

void delay(uint16_t time)
{
    uint16_t i = 0;
    while (time--)
    {
        i = 12000; // 自己定义
        while (i--);
    }
}

/**
 * @brief 温度过高报警
 *
 */
void temp_high_Worrning(void)
{
    beep_flag = 1;
    HAL_GPIO_WritePin(BEEP_GPIO_Port, BEEP_Pin, GPIO_PIN_SET);
    BEEP_DELAY(100);
    HAL_GPIO_WritePin(BEEP_GPIO_Port, BEEP_Pin, GPIO_PIN_RESET);
    OLED_Clear();
    OLED_ShowString(0, 0, "Temp High!", OLED_8X16);
    OLED_Update();
}
/**
 * @brief 电池电量低报警
 *
 */
void battery_low_Worrning(void)
{
    beep_flag = 2;
    HAL_GPIO_WritePin(BEEP_GPIO_Port, BEEP_Pin, GPIO_PIN_SET);
    BEEP_DELAY(100);
    HAL_GPIO_WritePin(BEEP_GPIO_Port, BEEP_Pin, GPIO_PIN_RESET);
    BEEP_DELAY(100);
    HAL_GPIO_WritePin(BEEP_GPIO_Port, BEEP_Pin, GPIO_PIN_SET);
    BEEP_DELAY(100);
    HAL_GPIO_WritePin(BEEP_GPIO_Port, BEEP_Pin, GPIO_PIN_RESET);
    BEEP_DELAY(100);
    HAL_GPIO_WritePin(BEEP_GPIO_Port, BEEP_Pin, GPIO_PIN_SET);
    BEEP_DELAY(100);
    HAL_GPIO_WritePin(BEEP_GPIO_Port, BEEP_Pin, GPIO_PIN_RESET);
    OLED_Clear();
    OLED_ShowString(0, 0, "Battery Low!", OLED_8X16);
    OLED_Update();
}
/**
 * @brief 停止报警
 *
 */
void buzzer_stop(void)
{
    if (beep_flag)
    {
        beep_flag = 0;
        OLED_Clear();
        OLED_Update();
    }
    HAL_GPIO_WritePin(BEEP_GPIO_Port, BEEP_Pin, GPIO_PIN_RESET);
}
